[Day 03] 觀察者模式,命令模式,轉接器模式,表象模式


觀察者模式

當一個被觀察者改變,其他的觀察者物件都會收到通知並執行對應動作。
當協會(被觀察者)發布任務時,每一個關注協會訊息的冒險者(觀察者)會接收到訊息,並且做出對應的動作,發佈及訂閱就是觀察者模式的重點。

命令模式

客戶端不直接向命令執行者請求,而是將請由交由接收者,再由接收者轉交給命令執行者,而接收者可以將請求排成工作序列,亦可移除尚為執行的請求。
飲料店的服務生(Invoker)向冒險者(Client)接單(Command),目前飲料店有飲料跟甜點兩種產品,因此拆單成飲料訂單(Concrete Command)及甜點訂單(Concrete Command)兩種,訂單再交由廚房人員(Receiver)負責製作。

轉接器模式

透過介面轉換讓原不相容的介面能正常工作,例如:USB轉micro USB、三孔插座轉兩孔等。
今天冒險者們出門解任務,走到一半發現缺少會丟火球的法師,但也不可能折返,所以就將弓箭手的弓箭包上布,點火後再射出,透過布的轉換,就如同丟火球一樣。

表象模式

用一個介面包裝個個子系統,由介面與客戶端做溝通。
回到家中要看電影,就要先打開總電源,然後打開電視盒電源、開啟重低音放大器、打開液晶電視、打開DVD撥放器、打開PS3、放入藍光光碟、按播放鍵撥放影片...等,非常麻煩,外觀模式就好像一個超級遙控器,把所有動作都整合到當中,按一個按鍵就全部都開好,方便使用者操作。

MVC架構

  • M: Model
  • V: View
  • C: Controller

網頁應用程式常會採取MVC架構,一般會用Controller對應一個網頁功能,Controller會呼叫多個Model交叉使用來處理資料,如果有個Service整合這些Model的功能讓Controller更容易取得資料,這個Service就是表象模式的設計。

#寫作松 #設計模式







你可能感興趣的文章

Java 隨手記

Java 隨手記

The introduction and difference between class component and function component in React

The introduction and difference between class component and function component in React

有關 PySpark 的那些事

有關 PySpark 的那些事






留言討論